package com.spider.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class KubazhaMD5Example {

    public static void main(String[] args) {
        String loginname = "alta2017";
        String ukey = "ALta888!@#";
        String combined = loginname + ukey + "kbz"; // 拼接字符串

        String vcode = getMD5(combined); // 计算 MD5
        System.out.println("vcode: " + vcode); // 输出结果
    }

    /**
     * 计算字符串的 MD5 值
     *
     * @param input 输入字符串
     * @return MD5 哈希值（32 位小写）
     */
    public static String getMD5(String input) {
        try {
            // 创建 MessageDigest 实例，指定使用 MD5 算法
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 将输入字符串转换为字节数组，并计算哈希值
            byte[] hashBytes = md.digest(input.getBytes("UTF-8"));

            // 将字节数组转换为十六进制字符串
            StringBuilder hexString = new StringBuilder();
            for (byte b : hashBytes) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) {
                    hexString.append('0'); // 补齐前导零
                }
                hexString.append(hex);
            }

            return hexString.toString(); // 返回 MD5 值
        } catch (NoSuchAlgorithmException | java.io.UnsupportedEncodingException e) {
            throw new RuntimeException("MD5 calculation failed", e);
        }
    }
}
